<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div {
				width: 100px;
				height: 100px;
				background-color: red;
			}
		</style>
	</head>
	<body>


		<script type="text/javascript">
			// number  string  boolean  undefiend  null   object

			var a; //number
			// 取值 
			//  &&  真真为真 其他为假  遇假则停 取假值 否则取后面的值
			// ||   假假为假 其他为真   遇真则停 取真值 否则取后面的值
			//   js 转化    6个   false  null  undefined   NaN    0   ''
			var b;
			var c = '2'
			
			// if(c===1){
			// 	console.log('今天星期一');
			// }else if(c===2){
			// 	console.log('今天星期二');
			// }else if(c===7){
			// 	console.log('今天星期天');
			// }else{
			// 	console.log('输入错误');
			// }
			
			switch (c){
				case 1:
					console.log('今天星期一');
					break;
				case 2:
					console.log('今天星期二');
					break;
				case 7:
					console.log('今天星期天');
					break;
				default:
					console.log('输入错误');
					break;
			}
		</script>
	</body>
</html>
<!--  


一、数据类型
	在计算机中，不同的数据所需占用的存储空间是不同的，为了便于把数据分成所需内存大小不同的数据，充分利用存储空间，于是定义了不同的数据类型。
	简单来说，数据类型就是数据的类别型号。比如姓名“张三”，年龄18，这些数据的类型是不一样的。
	js 弱类型语言
	
	1.简单数据类型/基础数据类型   数字 numbber   字符串 string 布尔值  true false  undefined  null
	2.复杂数据类型 /引用数据类型  对象   object 
		① 数组-多个数据的集合    var  arr = [1,2,5,6,8,'ddd',true]   
			获取数组从数组的 序号(索引值-索引值从0开始的) 来拿    arr[1]
		② obj  
		// key  -  value
		var obj = {
			name:'张三',
			age:18
		}
		对象里面 通过 点操作 对象的key 去拿到 对应key的value
		当属性 key 需要用变量来存储的时候 使用 []  去获取这个值
		var mKey = 'name'
		console.log(obj[mKey]);
		③ 函数 function(){}
		
	
	如何获取数据类型
	数据类型转换
	typeof 数据的数据类型   检测到null 得到的结果是 object   检测函数得到的结果是 function
	typeof检测未声明的变量不会抛出错误,会返回'undefined'
二、运算符
	-  算数运算符  + - * / % 
		表达式和返回值
		表达式：是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合
		简单理解：是由数字、运算符、变量等组成的式子
		表达式最终都会有一个结果，返回给开发者，称为返回值
		
		
	- 隐式类型转换   
		+ 两边如果有一边是字符串 那么将会转换成字符串进行 拼接
		- *  / % 会将 两边都转换成数字进行运算 如果转换不成功那么 将得到 NaN(数据类型是个数字)
	
	-  递增和递减运算符-
			num ++  num--
			递增运算符要求其操作数必须是变量、对象中的某个属性或数组中的某个元素，并且操作数的类型必须是数字型的。
			如果操作数类型不是数字型，递增运算符会将其先转换为数字型数据，再进行递增操作。
			注意 如果自增之后赋值的话 那么  var c = num++   先赋值 再++  var c = ++num  先自增再赋值
			++ --   +  -     -*/% 转数字
	
	-  赋值运算符
	= +=  -=  *= /= %=
	
	
	-  比较运算符
	> < >= <= == != === !==
		将两个数据进行比较  最终得到一个 布尔值
	
		
	
	-  逻辑运算符
		&&  与  真真得真 其他为假
				遇假则停 取这个假值 否则 取后面那个值
		
		|| 或   假假为假 其他为真
			遇真则停 取真值 否则取后面那个值
		
		!  非
		疑问?哪些数据转换成布尔值 为 假  // 0  undefined null false  '' NaN 其他的所有数据 都为真
	
	位运算
	0.1+0.2 的问题
三、流程控制 
   1.if else 
	   if(a>5){
		console.log('a是比5大');
	   }else{
		
	   }
   2.三元表达式
	条件? 为真的代码 : 为假的代码
   3.switch
	switch(a){
		case 值:
		代码块 console.log('今天星期日');
		break;
		default:
		console.log('今天星期日');
	}
	
	
	== 的隐式类型转换
	1. 两边如果存在null或者undefined，他们只和对方以及自身相等，和其他的都不等
	2. 如果等式两边有布尔类型，要将布尔类型转化成数字
	3. 如果等式两边有数字，就要将不是数字的那边转化成数字
	4. 如果等式两边有对象存在，就要调用对象的ToPrimitive方法，转换为原始类型，
	原理是先调用valueof转换为原始类型，但是如果不是原始类型，就调用toString方法
 -->